import { dialog } from "electron";
//引入node原生fs模块
const fs = require("fs");
// 引入node内置的path模块
const path = require("path");
/* 需要读写的文件地址 */
const file_path = path.join(process.cwd(), "/lib/mm.md");
// 选择文件
export function openDialog(mainWindow) {
  return new Promise((resolve, reject) => {
    dialog
      .showOpenDialog(mainWindow, {
        properties: ["openFile"],
      })
      .then((result) => {
        resolve(result);
      })
      .catch((err) => {
        return reject(err);
      });
  });
}

export function openSaveDialog(mainWindow, { file, title }) {
  return new Promise((resolve, reject) => {
    dialog
      .showSaveDialog(mainWindow, {
        defaultPath: title,
      })
      .then((result) => {
        resolve(result);
      })
      .catch((err) => {
        return reject(err);
      });
  });
}
export function openFileChooseDialog(mainWindow, { file, title }) {
  return new Promise((resolve, reject) => {
    dialog
      .showOpenDialog(mainWindow, {
        defaultPath: title,
        properties: ["openDirectory"],
      })
      .then((result) => {
        if (!result.canceled) {
          resolve(result.filePaths[0]);
        }
      })
      .catch((err) => {
        return reject(err);
      });
  });
}

// 读取配置文件
export function readFile(path: string) {
  return new Promise((resolve, reject) => {
    fs.readFile(path, "utf8", function (err, dataStr) {
      if (err) return reject(err.message); //读取失败
      /* application.properties  文件内容符合ini配置文件的格式，
      就可以通过ini.parse把读取到的文件转成js可识别的对象 */
      // resolve(ini.parse(dataStr.toString()));
      resolve(dataStr);
    });
  });
}
// 更改配置文件
export function writeFile(path, config: string) {
  return new Promise((resolve, reject) => {
    fs.writeFile(path, config, function (err) {
      if (err) return reject(err.message); //写入失败
      resolve("写入成功");
    });
  });
}

// 使用nodejs 给文件重命名
export function reNameFile(path, newPath) {
  return new Promise((resolve, reject) => {
    fs.rename(path, newPath, function (err) {
      if (err) return reject(err.message);
      resolve("重命名成功");
    });
  });
}

// 删除文件夹下面的文件
function deleteFolderRecursive(folderPath) {
  //判断文件夹是否存在
  if (fs.existsSync(folderPath)) {
    //读取文件夹下的文件目录，以数组形式输出
    fs.readdirSync(folderPath).forEach((file) => {
      //拼接路径
      const curPath = path.join(folderPath, file);
      //判断是不是文件夹，如果是，继续递归
      if (fs.lstatSync(curPath).isDirectory()) {
        deleteFolderRecursive(curPath);
      } else {
        //删除文件或文件夹
        fs.unlinkSync(curPath);
      }
    });
    //仅可用于删除空目录
    // fs.rmdirSync(folderPath);
  }
}
// nodejs 创建文件夹
export function makeDir(path) {
  return new Promise((resolve, reject) => {
    if (fs.existsSync(path)) {
      deleteFolderRecursive(path);
      resolve("文件夹已存在!");
    } else {
      fs.mkdir(path, (err) => {
        if (err) {
          reject(err);
        } else {
          resolve("文件夹创建成功!");
        }
      });
    }
  });
}
